Skip to content

Conversation

@olaservo
Copy link
Member

@olaservo olaservo commented Nov 30, 2025

Fixes: #947

Changes:

  • Adds a spec file for UX
  • Adds my takes on which tech to use for http and logging

Methodology:

  • Used Claude Opus 4.5 to analyze MCPJam source and latest MCP spec schema to propose UX and features to add to current spec files
  • Started grabbing a few feature requests ad-hoc from current inspector issues that seem like they should be included (such as support for official registry server.json)

Other notes:

  • I think it would be ideal to get something interactive going early, so I am generating a couple simple prototypes to get a feel for what the code would actually look like and how it might work in practice. Will post those in the discord and latest WG discussion thread.
  • If that method works well, we can let claude [or insert your fav bot here] to pick and choose what we like from those examples and use that to iterate on the spec.

olaservo and others added 3 commits November 29, 2025 21:18
- Express: cleaner routing/middleware for proxy CRUD endpoints, well-maintained ecosystem
- Pino: fastest logger option, JSON-structured logs work well for debugging MCP traffic

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Based on MCPJam Inspector analysis:
- Server connection card with status indicators
- Resizable panel layouts for Tools/Resources/Prompts screens
- Form generation from JSON Schema
- Error handling patterns (inline errors, retry count, doc links)

Also updates nav links in all spec files to include v2_ux.md.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add server.json import support (Issue modelcontextprotocol#922) for MCP Registry format
- Add History Screen with automatic capture and replay functionality
- Add Pino logging rationale with log-as-history architecture
- Remove emojis from markdown files, use text alternatives

New UX sections added:
- Logging Screen (notifications/message, logging/setLevel)
- Tasks Screen (tasks/*, notifications/task/statusChanged)
- Sampling Panel (sampling/createMessage)
- Elicitation Handler (form + URL modes)
- Roots Configuration (roots/list)
- Experimental Features Panel (raw JSON-RPC tester)

Enhanced existing screens:
- Tools: annotations, autocomplete, progress indicators, image/audio
- Resources: annotations, subscriptions
- Prompts: autocomplete
- Navigation: ping latency, listChanged indicators

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
olaservo added a commit to olaservo/inspector that referenced this pull request Nov 30, 2025
Implements UI-only prototype for component library evaluation:

- Server List home page with server cards
- AppLayout with top navigation (Tools, Resources, Prompts, Logs, Tasks, History)
- All 7 screen stubs with mock data
- ServerCard and StatusIndicator components
- Dark theme with Mantine v7

Based on v2_ux.md specification from PR modelcontextprotocol#945.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
olaservo added a commit to olaservo/inspector that referenced this pull request Nov 30, 2025
Implements UI-only prototype for component library evaluation:

- Server List home page with server cards
- AppLayout with top navigation (Tools, Resources, Prompts, Logs, Tasks, History)
- All 7 screen stubs with mock data
- ServerCard and StatusIndicator components
- Shadcn UI components (Button, Card, Badge, Switch, Input, Select)
- Tailwind CSS dark theme

Based on v2_ux.md specification from PR modelcontextprotocol#945.
Mirror of Mantine prototype for comparison.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Copy link
Member

@cliffhall cliffhall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all this great work, @olaservo. I added a few thoughts.

│ [user] │ │
│ │ { │
│ ○ data.csv │ "name": "my-app", │
│ │ "version": "1.0.0" │
Copy link
Member

@cliffhall cliffhall Dec 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we can split this left pane to have dynamically up to three scrollable regions. If there are only resources, they take up the whole pane. If there are also templates, the pane is split in two. When there are subscriptions, another pane could be added for them.

Comment on lines +468 to +471
│ ☑ DEBUG │ │
│ ☑ INFO │ │
│ ☑ WARNING │ │
│ ☑ ERROR │ │
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the available levels aren't represented here.

Comment on lines +484 to +487
- DEBUG: gray
- INFO: blue
- WARNING: yellow
- ERROR: red
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need colors (or shades) for all levels (debug, info, notice, warning, error, critical, alert, emergency)

- Display server's experimental capabilities from initialization
- Toggle client experimental capabilities to advertise
- Add custom client experimental capabilities
- **Raw JSON-RPC Tester:**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if the experimental feature requires custom headers?

| JSON Schema Type | Form Control |
|------------------|--------------|
| `string` | Text input |
| `string` (enum) | Select dropdown |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the new spec, we have single select and multi-select enums. The component framework we use will need to support multi-select combobox/select component or we could use checkboxes.

For instance shadcn has both combobox and select, but neither support multiselect, but there is a third party component that does: https://shadcn-multi-select-component.vercel.app/

├─────────────────────────────────────────────────────────┤
│ npx -y @modelcontextprotocol/server-everything [Copy]│
├─────────────────────────────────────────────────────────┤
│ [Server Info] [Edit] [Remove] │
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another thing from the sidebar that hasn't found a home is timeout behavior. That may be something that should be server specific as well. Perhaps we add a [Timeouts] button/modal?

├─────────────────────────────────────────────────────────┤
│ npx -y @modelcontextprotocol/server-everything [Copy]│
├─────────────────────────────────────────────────────────┤
│ [Server Info] [Edit] [Remove] │
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the three above comments, we might also want a [Clone] button for the server card as well, so that it could be configured in different ways, with different headers, metadata, timeouts.

├─────────────────────────────────────────────────────────┤
│ npx -y @modelcontextprotocol/server-everything [Copy]│
├─────────────────────────────────────────────────────────┤
│ [Server Info] [Edit] [Remove] │
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And of course there is Auth related settings that could be set per server: Client ID, Client Secret, Scope.

* [Server List (Home)](#server-list-home)
* [Server Connection Card](#server-connection-card)
* [Import server.json Modal](#import-serverjson-modal)
* [Server Info (Connected)](#server-info-connected)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should also have an OAuth debugger screen or modal.

```
┌─────────────────────────────────────────────────────────┐
│ [Icon] Server Name v1.0.0 │
│ STDIO [●] Connected [Toggle] │
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be a [OAuth Debug] button that would open a modal or go to a screen for stepping through the oauth flow.

├─────────────────────────────────────────────────────────┤
│ npx -y @modelcontextprotocol/server-everything [Copy]│
├─────────────────────────────────────────────────────────┤
│ [Server Info] [Edit] [Remove] │
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, how to choose connection type is maybe a server specific thing. If the server has its CORS open then you can connect direct, otherwise you'll want to connect via proxy. Maybe this is a dropdown option on this card.

cliffhall

This comment was marked as outdated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants